#ifndef __AREA_H_
#define	__AREA_H_
#include <stdlib.h>
/* 包含了中国的34个省级行政单位以及他们的编码代号 */
/*********************| marcos |*********************/
#define PROVINCE_CNT		34

/*********************| 数据类型 |*********************/
typedef struct {
	size_t	 	id;
	char 		name[32];
}area_t, *area_p;

typedef struct area_list_t{
	area_p 		area;
	int		size;
}area_list_t, *area_list_p;

typedef struct {
	size_t 		id;
	char*		pro;
	char*		city;
	char*		country;
}area_info_t, *area_info_p;

/*********************| extern data |*********************/
extern area_list_p	provinces;

/*********************| 外部方法 |*********************/
#ifdef __cplusplus
extern "C" {
#endif

int			area_lv(const size_t id);

int			init_area_db(const char* path);
/**
 * @brief 通过一个行政区代码，获取该行政区下属有几级行政单位
 * @return -1 参数错误，大概不是一个省级行政单位的代码
 */
int			sub_area_lv(const size_t id);
area_list_p		init_area_list(const int size);
area_list_p		init_sub_area_list(const size_t father_id);
void			free_area_list(area_list_p list);
area_info_p		init_area_info(const size_t id);
void			free_area_info(area_info_p info);
void			close_area_db();

#ifdef __cplusplus
}
#endif

#endif /* end of include guard: __AREA_H_ */
